Computing devices such as cellular phones, smart phones, laptops, tablets, etc., have become popular in recent years. As with most conventional computing devices, there is a need to provide storage of programs, data, etc., when the computing device is powered down. In addition to retaining data when it is depowered, conventional non-volatile memory lends itself to use in such applications due to its small size and ability to survive physical agitation as a result of a respective computing device being dropped. Boot programs have long been used to initialize a corresponding computer device after it has been powered. In general, a boot program is code executed by a respective computer after power is applied to a corresponding CPU (Computer Processing Unit). The executed boot code computer program typically loads a main operating system into memory space so that the corresponding computer device can thereafter be used to execute one or more different applications as desired by a respective user of the computer system.
It is common to store boot code in a pre-specified location of respective non-volatile memory in a computer device. Upon power up of the computer device (such as when a computer is first turned ON is re-energized after being turned off, when the computer is reset or when the operator invokes an appropriate LOAD function from a respective console, etc.), a respective processor resource retrieves the boot code from a non-volatile memory storage resource (such as a NAND flash devices) and then executes the retrieved boot code. In certain instances, as mentioned, execution of the boot code (as retrieved from non-volatile memory) causes the computer to perform an initial operation such as loading of an operating system. The code retrieved by the executed boot program (such as code of the operating system) can be stored in another storage location such as in a hard disk drive (separate from the non-volatile memory that stores the boot code).
Non-volatile memory, for example, NAND flash memory (in which executable boot code is stored) may include many storage cells to store bits of information. Any of the many storage cells can fail over the useful life of the memory system. One conventional way to reduce the impact of failing memory cells and loss of data is to generate and store error correction information for corresponding data to be stored in a memory system. In certain instances, the error correction information can be used to restore corrupted data, which is caused by one or more failing memory cells.
To ensure a long life of a respective computer device, and provide a continued ability to boot a respective communication device despite loss of data due to memory cell failures, boot code stored in a respective non-volatile memory device is typically stored along with corresponding error correction information. The error correction information enables a respective error correction decoder to correct bit errors associated with retrieved boot code prior to execution of the boot code by a respective processor resource to boot the computer device.